﻿#include "ZUtils.h"

#include <QProcess>
#include <QFileInfo>
#include <QDesktopServices>
#include <QUrl>
#include <QDir>

ZFLIB_BEGIN_NAMESPACE

QByteArray charArray2ByteArray(char *buf, int size)
{
    QByteArray ba;
    if (buf)
    {
        if (size < 0)
        {
            ba = QByteArray(buf);
        }
        else if (size > 0)
        {
            if (buf[size - 1] == '\0')
            {
                ba = QByteArray(buf);
            }
            else
            {
                ba = QByteArray(buf, size); /* 深拷贝，末尾加0 */
                ba = QByteArray(ba.data(), -1); /* 深拷贝，取以0结尾的字符串部分 */
            }
        }
    }

    return ba;
}

QString charArray2Local8BitString(char *buf, int size)
{
    QString str;
    if (buf)
    {
        if (size < 0)
        {
            str = QString::fromLocal8Bit(buf);
        }
        else if (size > 0)
        {
            if (buf[size - 1] == '\0')
            {
                str = QString::fromLocal8Bit(buf);
            }
            else
            {
                QByteArray ba(buf, size);
                str = QString::fromLocal8Bit(ba);
            }
        }
    }

    return str;
}

QString charArray2Utf8String(char *buf, int size)
{
    QString str;
    if (buf)
    {
        if (size < 0)
        {
            str = QString::fromUtf8(buf);
        }
        else if (size > 0)
        {
            if (buf[size - 1] == '\0')
            {
                str = QString::fromUtf8(buf);
            }
            else
            {
                QByteArray ba(buf, size);
                str = QString::fromUtf8(ba);
            }
        }
    }

    return str;
}

ZFLIB_END_NAMESPACE
